package com.ucode.springboot.starter.canal.client.transfer;

import java.util.List;
import java.util.Map;

import com.alibaba.otter.canal.client.CanalConnector;
import com.ucode.springboot.starter.canal.client.ListenerPoint;
import com.ucode.springboot.starter.canal.config.CanalConfig;
import com.ucode.springboot.starter.canal.event.CanalEventListener;

/**
 * 消息转换工厂
 * @author: liliang
 * @date: 2020年2月27日 下午2:34:14
 */
@FunctionalInterface
public interface TransponderFactory {

    /**
     * 消息转换实例
     * @author liliang
     * @date 2020年2月27日
     * @param connector  canal 连接
     * @param config canal 配置
     * @param listeners 监听器
     * @param annoListeners 拦截注解
     * @return
     */
    MessageTransponder newTransponder(CanalConnector connector, Map.Entry<String, CanalConfig.Instance> config, List<CanalEventListener> listeners,
            List<ListenerPoint> annoListeners);
}
